package info.motteke.mixivoice4j.http.json;

/**
 * JSONリクエストを構築するためのビルダです。
 * @author Y.Wakamatsu
 *
 * @param <R> 作成するリクエストのクラス
 */
public abstract class JsonRequestBuilder<R extends JsonRequest<?>> {

    /**
     * オブジェクトが設定されているかを確認します。
     * @param obj 判定対象
     * @param name 対象の名前
     * @throws NullPointerException 対象がnullである場合。
     */
    protected void check(Object obj, String name) {
        if(obj == null){
            throw new NullPointerException(name + "が設定されていません。");
        }
    }

    /**
     * リクエストを構築します。
     * @throws IllegalStateException リクエスト構築時にパラメータが不足していた場合
     */
    public abstract R build();
}
